729493
@@ -83,7 +83,6 @@
import org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException;
 import org.apache.hadoop.hbase.exceptions.ScannerResetException;
 import org.apache.hadoop.hbase.filter.ByteArrayComparable;
 import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
-import org.apache.hadoop.hbase.io.hfile.CorruptHFileException;
 import org.apache.hadoop.hbase.ipc.HBaseRPCErrorHandler;
 import org.apache.hadoop.hbase.ipc.HBaseRpcController;
 import org.apache.hadoop.hbase.ipc.PriorityFunction;
@@ -3095,12 +3094,17 @@
public class RSRpcServices implements HBaseRPCErrorHandler,
         // row that the client has last seen.
         closeScanner(region, scanner, scannerName, context);
 
+        // rethrow DoNotRetryIOException. This can avoid the retry in ClientScanner.
+        if (e instanceof DoNotRetryIOException) {
+          throw e;
+        }
 
-        // If it is a CorruptHFileException or a FileNotFoundException, throw the
+        // If it is a FileNotFoundException, wrap as a
         // DoNotRetryIOException. This can avoid the retry in ClientScanner.
-        if (e instanceof CorruptHFileException || e instanceof FileNotFoundException) {
+        if (e instanceof FileNotFoundException) {
           throw new DoNotRetryIOException(e);
         }
+
         // We closed the scanner already. Instead of throwing the IOException, and client
         // retrying with the same scannerId only to get USE on the next RPC, we directly throw
         // a special exception to save an RPC.
